<?php

class LoginHandler {
	
	// Nycklar för $_SESSION
	private $session_login = "LoginHandler::login";
	
	// Kollar om användaren är inloggad
	public function is_logged_in() {
		return (isset($_SESSION[$this->session_login]) && $_SESSION[$this->session_login]);
	}
	
	// Loggar in användaren
	public function login($username, $password) {
		
		// Inmatade uppgifter
		$entered_user = array($username, $password);
		
		// Hårdkodade användare
		$users = array();
		$user[] = array("rätt", "rätt");
		$user[] = array("helträtt", "helträtt");
		$user[] = array("sårättså", "sårättså");
		
		// Matcha mot hårdkodade användare
		switch ($entered_user) {
			case $user[0]: $_SESSION[$this->session_login] = true; return true;
			case $user[1]: $_SESSION[$this->session_login] = true; return true;
			case $user[2]: $_SESSION[$this->session_login] = true; return true;
			default: return false;
		}
		
	}
	
	// Loggar ut användaren
	public function logout() {
		unset($_SESSION[$this->session_login]);
	}
	
	// Testar inloggning
	public function test() {
		
		// Logga ut
		$this->logout();
		
		// Kolla att ingen är inloggad
		if ($this->is_logged_in()) {
			echo "Fel: Ingen borde vara inloggad.";
			return false;
		}
		
		// Försök logga in med fel uppgifter
		if ($this->login("fel", "fel")) {
			echo "Fel: Det gick att logga in med fel uppgifter.";
			return false;
		}
		
		// Kolla att ingen är inloggad
		if ($this->is_logged_in()) {
			echo "Fel: Ingen borde vara inloggad.";
			return false;
		}
		
		// Försök logga in med rätt uppgifter
		if (!$this->login("rätt", "rätt")) {
			echo "Fel: Det gick inte att logga in trots rätt uppgifter.";
			return false;
		}
		
		// Kolla att någon är inloggad
		if (!$this->is_logged_in()) {
			echo "Fel: Någon borde vara inloggad.";
			return false;
		}
		
		// Logga ut igen
		$this->logout();
		
		// Kolla att ingen är inloggad
		if ($this->is_logged_in()) {
			echo "Fel: Ingen borde vara inloggad.";
			return false;
		}
		
		// Försök logga in med delvis rätt uppgifter
		if ($this->login("rätt", "fel")) {
			echo "Fel: Det gick att logga in med delvis fel uppgifter.";
			return false;
		}
		
		// Kolla att ingen är inloggad
		if ($this->is_logged_in()) {
			echo "Fel: Ingen borde vara inloggad.";
			return false;
		}
		
		// Lyckat test
		return true;
		
	}
	
}

?>